/* 与任务有关的memory */
interface RoomMemory{
    /* 任务栈 */
    Task:{[range:string]:RoomTask[]}
    /* 任务挂载和删除时，不需要提示的任务名 */
    IgnoreName:string[]
    /* 冷却时间的哈希表 key为任务名 */
    CoolDownDic:{[Name:string]:number}
    /* 任务相关的记忆 */
    TaskMemory:{[Name:string]:string[] | string}
    /* 任务相关数据 */
    TaskData: any
    /* 展示zzZ表情 */
    zzZ?:boolean
}
/* 与任务有关的定义 */
interface Room{
    /* 任务基本控制函数 */
    MissionManager():void
    mountMisson(mis:RoomTask):boolean
    deleteMisson(role:TaskRange,name:string):boolean
    deleteMisson_ID(ID:string):boolean
    CoolDownManager():void
    DelayManager():void
    CheckInMisson(range:TaskRange,taskName:string):boolean
    CheckInMisson_ID(ID:string):boolean
    CheckMissonNum(range:TaskRange,TaskName:string):number
    getMisson(range:TaskRange,taskName:string):RoomTask | null
    getMisson_ID(ID:string):RoomTask | null
    updateMissonBindData():void
    getMisson_S(range:TaskRange,taskName:string,relateCreep:string):RoomTask | null
    updateLabBindData():void
    /* 实验室绑定相关函数 */
    BindLab(ID:string,MissonID:string,rType:ResourceConstant):boolean
    UnBindLab(ID:string,MissionID:string):boolean
    CheckBindLab(ID:string,MissionID):boolean
    FullBindLab(ID:string):boolean
    InitBindLab(ID:string,num:number,rType:ResourceConstant):void
    NumBindLab(ID:string,num:number):boolean
    TypeBindLab(ID:string,rType:ResourceConstant):boolean

    /* 被动任务 */
    LToS_PAS():void
    SToNT_PAS():void
    TToS_PAS():void
    SToT_PAS():void
    FTE_PAS():void
    SToFT_PAS():void
    FTLE_PAS():void
    SLToCL_PAS():void
    BCT_PAS():void
    CTL_PAS():void
    DR_PAS():void
    DY_PAS():void
    TToT_AC():void
    SG_AC():void
    RMH_AC():void
    OMH_AC():void
    FN_AC():void
    CIL_AC():void
    CRW_AC():void
    BRW_AC():void
    EHB_AC():void
    RP_AC():void
    PH_AC():void
    AIOA_AC():void
    GP_AC():void
    DSOA_AC():void
    

}
/* 任务系统3.0 在2.0的基础上，对任务系统进行便捷性和可靠性上的进一步优化 */
interface RoomTask {
    /* ------------必备项------------- */
    /* 任何任务都需要name + ID*/
    Name:string
    ID:string
    /* 任务的挂载区域 */
    range:TaskRange
    /* 任何任务都需要超时时间和任务冷却时间，只有冷却时间为0时才能重新挂载任务 */
    delayTick:number
    cooldownTick:number
    /* 任务阶段不再按照字符串给出，而是按照数字，随阶段递增，这里规定 0 是起始阶段，最高不能超过10 */
    state:number
    /* 任务优先级也使用数字表示，这里规定优先级最高不能超过10 */
    taskLevel:number
    /* 是否允许多任务发布 */
    OnlyOne:boolean

    /* ------------可选项------------- */
    disRoom?:string[]   // 目标房间
    num?:number     // 数量 泛用
    numData?:roleNumData    // 孵化数据
    relateCreep?:string[]   // 相关爬虫
    relateResource?:ResourceConstant[]
    disResource?:ResourceConstant[]
    linkFarTaskID?:string // 关联父任务
    linkSonTaskID?:string[] // 关联子任务
    switch?:boolean // 开关 泛用
    disStructure?:string[]  // 目标建筑
    sourceStructure?:string[] // 源建筑
    bindData?:BindData  // 任务绑定  适用于重复任务的情况
    expense?:number // 花费
    disnum?:number  // 目标数量 泛用
    sourcenum?:number   // 源数量 泛用
    words?:string  // 字符串数据 泛用
    OutMineData?:{} //外矿数据
    relateStructure?:string[] // 与任务有关的建筑
    Data?:{} //通用数据
    LabBind?:{}
    LabBindNum?:number
    type?:string  // 类型 泛用
    HandleRoom?:string
    index?:number // 索引 泛用
    isBeHand?:boolean // 是否正在被执行
}  
